<?php

class PdoLieu extends PdoConnect {

    public function create(lieu $lieu) {
        try {
            $this->open();
            $sql = "INSERT INTO `lieu`(IDLIEU, NOMLIEU, ADRESSELIEU, CODEPOSTALLIEU,VILLELIEU,IDPAYS) VALUES(?, ?, ?, ?, ?, ?)";

            $prep = $this->pdo->prepare($sql);

            $prep->bindValue(1, $lieu->getIdLieu(), PDO::PARAM_INT);
            $prep->bindValue(2, $lieu->getNomLieu(), PDO::PARAM_STR);
            $prep->bindValue(3, $lieu->getAdresseLieu(), PDO::PARAM_STR);
            $prep->bindValue(4, $lieu->getCodePostalLieu(), PDO::PARAM_STR);
            $prep->bindValue(5, $lieu->getVilleLieu(), PDO::PARAM_STR);
            $prep->bindValue(6, $lieu->getIdPays(), PDO::PARAM_INT);

            $prep->execute();
        } catch (PDOException $e) {
            $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
            die($msg);
        }
    }

    public function readAll() {
        try {
            $this->open();
            $sql = "SELECT * FROM `lieu` ORDER BY NOMLIEU";
            $prep = $this->pdo->prepare($sql);

            $prep->execute();
            $prep->setFetchMode(PDO::FETCH_ASSOC);


            return $prep;
        } catch (PDOException $e) {
            $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
            die($msg);
        }
    }

    public function readOne($IdLieu) {
        try {
            $this->open();
            $sql = "SELECT * FROM `lieu` WHERE IDLIEU=$IdLieu";
            $prep = $this->pdo->prepare($sql);

            $prep->execute();

            $lieu = new Lieu();
            $ligne = $prep->fetch(PDO::FETCH_OBJ);
            $lieu->setIdLieu($ligne->IDLIEU);
            $lieu->setNomLieu($ligne->NOMLIEU);
            $lieu->setAdresseLieu($ligne->ADRESSELIEU);
            $lieu->setCodePostalLieu($ligne->CODEPOSTALLIEU);
            $lieu->setVilleLieu($ligne->VILLELIEU);
            $lieu->setIdPays($ligne->IDPAYS);


            return $lieu;
        } catch (PDOException $e) {
            $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
            die($msg);
        }
    }

    public function delete(lieu $lieu) {

        try {
            $this->open();
            $sql = "DELETE FROM `lieu` WHERE IDLIEU=?";

            $prep = $this->pdo->prepare($sql);
            $prep->bindValue(1, $lieu->getIdLieu(), PDO::PARAM_INT);

            $prep->execute();
        } catch (PDOException $e) {
            $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
            die($msg);
        }
    }

    public function update(lieu $lieu) {
        try {
            $this->open();
            $sql = "UPDATE `lieu` SET IDPAYS= ?, NOMLIEU=?, ADRESSELIEU=?, CODEPOSTALLIEU = ?, VILLELIEU=? WHERE IDLIEU=?";

            $prep = $this->pdo->prepare($sql);

            $prep->bindValue(1, $lieu->getIdPays(), PDO::PARAM_INT);
            $prep->bindValue(2, $lieu->getNomLieu(), PDO::PARAM_STR);
            $prep->bindValue(3, $lieu->getAdresseLieu(), PDO::PARAM_STR);
            $prep->bindValue(4, $lieu->getCodePostalLieu(), PDO::PARAM_STR);
            $prep->bindValue(5, $lieu->getVilleLieu(), PDO::PARAM_STR);
            $prep->bindValue(6, $lieu->getIdLieu(), PDO::PARAM_INT);



            $prep->execute();
        } catch (PDOException $e) {
            $msg = 'ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage();
            die($msg);
        }
    }

    public function exist($lieu) {
        $this->open();
        $query = "SELECT * FROM lieu WHERE NOMLIEU='$lieu';";
        $statement = $this->pdo->query($query);
        return $statement->rowCount();
    }

}

